package com.manuserve.mountainduck.kernel;

import android.graphics.PointF;

/**
 * Created by xmanoux on 09/03/14.
 */
public class Trajectoire {

    float toI =  0 ; //destination I attendue
    float toJ = 0 ; //destination J attendue
    float VoriginI = (float) 0 ; //vitesse abscisse
    float VoriginJ = (float) 0 ; //vitesse ordonnée
    float t = (float) 0 ; //temps dans la trajectoire;
    float originI = 0 ;
    float originJ = 0 ;
    Boolean ready = false ;
    Float maximum = (float) 0 ;
    Duck duck = null ;
    Float totalTime = (float) 0 ;

    public Trajectoire(Duck duck) {
        this.duck = duck ;
    };

    public PointF calc(Float t) {
        Duck thisDuck = this.duck ;
        Trajectoire trajectoire = this;

        return new PointF(
                (float) ( t*trajectoire.VoriginI + trajectoire.originI ),
                (float) ( trajectoire.originJ + t*trajectoire.VoriginJ  -thisDuck.univers.g*t*t/2)
        );

    }

    public PointF getControlPoint() {
        return new PointF(
                this.originI+(this.toI-this.originI)/2,
                this.originJ+(this.VoriginJ/this.VoriginI)*(this.toI-this.originI)/2
        );
    };

    public void resolve(Float t)  {
        Duck thisDuck = this.duck ;
        Trajectoire trajectoire = this ;
        trajectoire.VoriginI = (trajectoire.toI -thisDuck.i ) /t ;
        trajectoire.VoriginJ = (trajectoire.toJ -thisDuck.j + thisDuck.univers.g*t*t/2 ) /t ;
        trajectoire.originI = thisDuck.i ;
        trajectoire.originJ = thisDuck.j ;
        trajectoire.t = (float) 0 ;
        trajectoire.totalTime = t ;
        trajectoire.ready = false ;
        trajectoire.maximum = trajectoire.originJ + (t/2)*trajectoire.VoriginJ  -thisDuck.univers.g*(t*t/8);
    };






}
